﻿using Onetube.Entities;
using Onetube.Providers.YoutubeDownloader;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;

namespace Onetube.Providers.Interfaces
{
    public interface IFileStorageProvider
    {

        Task<IEnumerable<FileDownloadEntity>> GetAllSavedFilesAsync();

        Task SaveFileAsync(FileDownloadEntity file);

        Task DeleteFileAsync(FileDownloadEntity file);

        Task<Uri> SaveImageAsync(Stream stream, string name);

        Task<byte[]> GetImageAsync(string name);

        Task SaveFileDownloadingAsync(DownloadItem item);
        Task DeleteFileDownloadingAsync(DownloadItem item);

        Task<IEnumerable<DownloadItem>> GetAllDownloadingFilesAsync();
    }
}